/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agb.Modelo;

/**
 *
 * @author Servidor
 */
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.util.ArrayList;
import java.util.List;

//import org.me.logica.ContactoLOG;

/**
 *
 * @author Lizardo Rios Villavicencio
 */
public class Contacto implements java.io.Serializable {

    private int codContacto;
    private String nombres;
    private String telefono;
    private String localidad;
    private String email;
    private String comentario;
    private String fechaEnvio;
    
    ///////////////////////////////////
    private boolean valido;
    private ArrayList listaFiltrada = new ArrayList();
    private int numeroFilas;
    
    //////////////////////////////////
    /* Variables de miembro */
    
    
    /* Variables para el filtrado */
    private int contador;
    private boolean opcionFiltrado;
        
    /* ArrayLists que contienen grupos de registros */
    private List codigoContactoList, nombresList, 
                 telefonoList, localidadList, 
                 emailList, comentarioList, fechaEnvioList;
    
    /* Variables de ayuda */
    private int currentRow;
    private int tmpCurrentRow;
    private int rowCount;
    private boolean vPublicar;
    
    //private Connection db = null;
    private ArrayList listaContacto = new ArrayList();
    
    ////////////////////////////////////////////////////

    //Constructor
    public Contacto() {
        /* Inicializar propiedades del bean */
        setCodContacto(0);
        setNombres("");
        setTelefono("");
        setLocalidad("");
        setEmail("");
        setComentario("");
        setFechaEnvio("");
        setPublicar(false);
        
        /* Inicializar arrayList para contener grupos de registros */
        codigoContactoList = new ArrayList();
        nombresList = new ArrayList();
        telefonoList = new ArrayList();
        localidadList = new ArrayList();
        emailList = new ArrayList();
        comentarioList = new ArrayList();
        fechaEnvioList = new ArrayList();
                                
        /* Inicializar variables de ayuda */
        currentRow = 0;
        rowCount = 0;
    }
    public Contacto(boolean opc) {
        
    }
    
    /* Metodos Accesor */
    

    ///////////////////////////////////////////////////////////////////////
    public boolean getValido() {
        return this.valido;
    }
    public void setValido(boolean valido) {
        this.valido = valido;
    }
    
    ////////////// PARA EL FILTRADO //////////////////
    public void setOpcionFiltrado(boolean _opcionFiltrado) {
        opcionFiltrado = _opcionFiltrado;
    }
    public boolean getOpcionFiltrado() {
        return opcionFiltrado;
    }
    
    ////////////// PARA LA PAGINACION //////////////////
    
    /* Cargar parientes */ 
//    private void cargarContactos(){
//        int total = 0;
//        ContactoLOG lContacto = new ContactoLOG();
//        if (opcionFiltrado) {
//            //Contacto bContacto = new Contacto(true);
//            listaContacto = getListaFiltrada();
//        } else {
//            listaContacto = lContacto.listarContacto();
//        }
//        
//        if (listaContacto != null) {
//            if (listaContacto.size() > 1) {
//                total = listaContacto.size() - 1;
//            } else {
//                total = 0;
//            }
//        } else {
//            total = 0;
//        }
//        this.setNumeroFilas(total);
//        //comprobar los errores falta esto
//        
//    }
    
    //////////////////////////////////////////
    
    /* Atributo de solo lectura */
    public int getCurrentRow() {
        return currentRow;
    }
    
    /* Estado de la publicacion */
    public void setPublicar(boolean _vPublicar) {
        vPublicar = _vPublicar;
    }
    public boolean getPublicar() {
        return vPublicar;
    }
    
    /* Publicar lista de registros */
    public boolean populate() {
        if (vPublicar) {
            nombresList.clear();
            vPublicar = false;
        }
        
        /* Si prodIDList esta vacio, entonces ejecutar la consulta para 
         * publicarla o Si la opcion de filtro esta activada
         */
        if (nombresList.isEmpty() || opcionFiltrado) {
            try {
                /* Execute Query */
//                cargarContactos();
                codigoContactoList.clear();
                nombresList.clear();
                telefonoList.clear();
                localidadList.clear();
                emailList.clear();
                comentarioList.clear();
                fechaEnvioList.clear();
                                
                rowCount = 0;
                // Rellenar todas los registros en los arrayList de la paginacion
                for (int fils=1; fils<listaContacto.size(); ++fils) {
                    String[] unaFila = (String[]) listaContacto.get(fils); 
                    String xCodContacto = (unaFila[0] == null) ? "0" : unaFila[0];
                    String xNombres = (unaFila[1] == null) ? "" : unaFila[1];
                    String xTelefono = (unaFila[2] == null) ? "" : unaFila[2];
                    String xLocalidad = (unaFila[3] == null) ? "" : unaFila[3];
                    String xEmail = (unaFila[4] == null) ? "" : unaFila[4];
                    String xComentario = (unaFila[5] == null) ? "" : unaFila[5];
                    String xFechaEnvio = (unaFila[6] == null) ? "" : unaFila[6];
                    
                    //codigoPersonaList.add(xCodPersona);
                    codigoContactoList.add(xCodContacto);
                    nombresList.add(xNombres);
                    telefonoList.add(xTelefono);
                    localidadList.add(xLocalidad);
                    emailList.add(xEmail);
                    comentarioList.add(xComentario);
                    fechaEnvioList.add(xFechaEnvio);
                    
                    rowCount++;
                }
            } catch (Exception e) {
                System.out.println("Error populating productBean" + e.toString());
                return false;
            }
        }
        /* Devuelve el estado de la operacion (se asume que fue positivo llegados a este punto) */
            return true;
    }
    
    /* Aumentar la fila correlativa */
    public void setContador(int _contador) {
        contador = _contador;
    }
    
    /* Recuperar el contador */
    public int getContador() {
        contador++;
        return contador;
    }
    
    /* Recuperar fila actual */
    public int getFilaActual() {
        return tmpCurrentRow;
    }
    
    /* Restablecer la fila actual */
    public void setStartRow(int _start) {
        if (_start < rowCount) {
            currentRow = _start;
        }
    }
    
    /* Ir a la siguiente fila */
    public int nextRow() {
        
        if (currentRow == rowCount) {
            currentRow = 0; // Reset for next page request
            tmpCurrentRow = currentRow;
            return 0;  // return 0 to indicate end of recordset
        }
        
        /* Publicar las propiedades del bean con la fila actual */
        if (codigoContactoList.size()<currentRow) {
            // cambiar esta clausula para el uso de los filtros
            currentRow = 0;
        }
        String sCodContacto = (String)codigoContactoList.get(currentRow); 
        int xCodContacto = (sCodContacto == null) ? 0 : Integer.parseInt(sCodContacto);
        setCodContacto(xCodContacto);
        setNombres((String)nombresList.get(currentRow));
        setTelefono((String)telefonoList.get(currentRow));
        setLocalidad((String)localidadList.get(currentRow));
        setEmail((String)emailList.get(currentRow));
        setComentario((String)comentarioList.get(currentRow));
        setFechaEnvio((String)fechaEnvioList.get(currentRow));
        
        currentRow++;
        tmpCurrentRow = currentRow;
        
        /* Devolver currentRow */
        return currentRow;
    }

    public int getCodContacto() {
        return codContacto;
    }

    public void setCodContacto(int codContacto) {
        this.codContacto = codContacto;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getLocalidad() {
        return localidad;
    }

    public void setLocalidad(String localidad) {
        this.localidad = localidad;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getComentario() {
        return comentario.trim();
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public String getFechaEnvio() {
        return fechaEnvio;
    }

    public void setFechaEnvio(String fechaEnvio) {
        this.fechaEnvio = fechaEnvio;
    }

    public ArrayList getListaFiltrada() {
        return listaFiltrada;
    }

    public void setListaFiltrada(ArrayList listaFiltrada) {
        this.listaFiltrada = listaFiltrada;
    }

    public int getNumeroFilas() {
        return this.numeroFilas;
    }
    public void setNumeroFilas(int numeroFilas) {
        this.numeroFilas = numeroFilas;
    }
    
}

